import { export_json_to_excel } from '../excel/export2Excel';
export default {
  methods: {
    /**
     * @desc 表格列导出
     *       根据columns属性里每个字段的export来进行决定是否导出（如果没设，默认为true，false表示不需要导出该列）
     *       根据columns属性里每个column里的key或dataIndex来指向相应的数据值
     * @example 
     * const columns = [
      {
        title: '标题1',
        dataIndex: 'username',
        key: 'username',
        align: 'center',
        fixed: 'left',
        width: 150,
      },
      {
        title: '标题2',
        key: 'action',
        align: 'center',
        export: false,
        width: 150,
      },
    ]
     * @param {Array<any>} list 表格数据
     * @param {Object} options 导出设置
     * @param {String} options.filename 文件名 默认filename
     * @param {String} options.bookType 文件类型 默认xlsx 
     * @param {String} options.autoWidth 自动宽度 默认false
     */
    exportData(list = [], options) {
      // 兼容如果传进来的数据是个空值的情况
      list = list === null ? [] : list;
      let { filename, sheetname, bookType, autoWidth } = options;
      let columns = [...this.columns].filter((item) =>
        item.export !== undefined ? item.export : true
      );
      let header = [columns.map((item) => item.title)];
      let body = list.map((item) => {
        let obj = [];
        columns.forEach((column) => {
          obj.push(item[column.key || column.dataIndex]);
        });
        return obj;
      });
      let data = [body];
      sheetname = [sheetname || 'sheet1'];
      filename = filename || 'filename';
      autoWidth = autoWidth || false;
      bookType = bookType || 'xlsx';
      let json = {
        header,
        data,
        sheetname,
        filename,
        autoWidth,
        bookType,
      };
      export_json_to_excel(json);
    },
  },
};
